Many database management systems enable data and the relationships among the data to be stored in tables. An important requirement for some applications is the ability to query for data that has changed in a database and to generate a record of how the data has changed since a given date and time. Tracking changes enables applications to query for the data that has changed in a table, and to obtain the changes and information about those changes. Some change tracking techniques are available for enabling an application to track data changes from a single table in a database, and may enable applications to query for the data that has changed in a single table in a database management application. One change tracking technique may capture insert, update, modification, and delete activity applied to a database management system that implements structured query language (SQL) and can provide information about the details of the changes. Another change tracking technique may be a more limited technique for capturing data changes and may capture the fact that rows and/or columns in a table were changed, however this technique may not capture the specific information as to how the data was changed and when.
Some applications may need to track the changes across a collection of related tables, or an entity document. Typically, in order to track changes to data in multiple tables stored in a database management system and access information about the changes, a more complex, specific and exact query must be generated. If the exact query language is not generated, then the tracked changes desired may not be able to be retrieved by the query from the collection of related tables in the database management system. Generating the query for tracking changes across multiple tables in the database management system may require application developers to implement a custom change tracking mechanism themselves, which may requiring extensive programming knowledge and skill and complex coding schemes. For example, creating a change tracking query may require using programming techniques including a creating a combination of triggers, timestamp columns, new tables to stores the tracking information and creating a custom cleanup process.
Many applications work at a higher level of abstraction than tables commonly referred to as the domain representation or logical representation of a schema. This higher level of abstraction is mapped to the physical database schema. Typically the mapping is outside the scope of the database management system.